package com.xiyang.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.DefaultServiceInstance;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EurekaClientConfigBean;
import org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 *
 * 在分布式系统中，由于服务数量巨多，为了方便服务配置文件统一管理，实时更新，所以需要分布式配置中心组件。
 * 在Spring Cloud中，有分布式配置中心组件spring cloud config ，它支持配置服务放在配置服务的内存中（即本地），
 * 也支持放在远程Git仓库中。在spring cloud config 组件中，分两个角色，一是config server，二是config client。
 * ---------------------
 * 微服务配置中心
 * @author xiyang.ycj
 * @since May 30, 2019 22:44:07 PM
 */
@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class ConfigApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigApplication.class, args);
    }

    @Autowired
    EurekaInstanceConfigBean eurekaInstanceConfigBean;

    /**
     * 配置服务向注册中心注册的实例id
     */
    @Bean
    public void instanceIdConfig(){
        String ipAddress = eurekaInstanceConfigBean.getIpAddress();
        eurekaInstanceConfigBean.setInstanceId(ipAddress+":"+eurekaInstanceConfigBean.getAppname()+":"+eurekaInstanceConfigBean.getNonSecurePort());
    }

}
